package br.unesp.demac.bcc.soo.clarus.dao;

import br.unesp.demac.bcc.soo.clarus.bean.Login;
import br.unesp.demac.bcc.soo.clarus.util.FabricaConexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Evaldo
 */
public class LoginDAOImp implements LoginDAO {
    
    /**
     * Salva dados de login
     * @param conn Conexão
     * @param login Login a ser inserido
     * @param idUsuario Id Usuário
     */
    public void salvarLogin(Connection conn, Login login, int idUsuario){
        final String query = "INSERT INTO login (idUsuario, loginUsuario, senhaUsuario) " +
                "VALUES (?, ?, ?);";
        
        PreparedStatement pstmt = null;
        
        try{ 
            //inserindo em login
            pstmt = conn.prepareStatement(query);
            pstmt.setInt(1, idUsuario);
            pstmt.setString(2, login.getLoginUsuario());
            pstmt.setString(3, login.getSenhaUsuario());
            pstmt.execute();
        }
        catch(SQLException ex){
            System.out.println("Erro ao inserir login: " + ex.getMessage());
        }
        finally{
            FabricaConexao.fechar(pstmt);
        }
    }

    public Login getLoginByUsuarioId(Connection conn, int idUsuario) {
        final String query = "SELECT loginUsuario, senhaUsuario FROM Login " +
                "WHERE idUsuario = ?;";
        PreparedStatement pstmt = null;
        ResultSet res = null;
        Login login = null;

        if (conn != null) {
            try {
                //inserindo dados em Usuario
                pstmt = conn.prepareStatement(query);
                pstmt.setInt(1, idUsuario);
                res = pstmt.executeQuery();

                if (res.next()) {
                    login = new Login();
                    login.setLoginUsuario(res.getString("loginUsuario"));
                    login.setSenhaUsuario(res.getString("senhaUsuario"));
                }

            } catch (SQLException ex) {
                System.out.println("Erro ao obter login: " + ex.getMessage());
            }
        }
        return login;
    }

    public int validaLogin(Connection conn, String loginUsuario, String loginSenha) {
        int idUsuario = -1;
        final String query = "SELECT idUsuario FROM Login " +
                "WHERE loginUsuario = ? AND senhaUsuario = ?;";
        PreparedStatement pstmt = null;
        ResultSet res = null;

        if (conn != null) {
            try {
                pstmt = conn.prepareStatement(query);
                pstmt.setString(1, loginUsuario);
                pstmt.setString(2, loginSenha);
                res = pstmt.executeQuery();

                if (res.next()) {
                    idUsuario = res.getInt("idUsuario");
                }

            } catch (SQLException ex) {
                System.out.println("Erro ao obter login: " + ex.getMessage());
            }
        }
        return idUsuario;
    }
}
